package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import vista.VistaBotoneraMenuPrincipal;
import vista.VistaMenuPrincipal;
import vista.VistaPoliciaPreguntar;
import vista.VistaPoliciaViajar;
import modelo.geografia.Ciudad;
import modelo.policia.Policia;
import modelo.Juego;


public class ControlMenuPrincipal implements ActionListener{
	
	private VistaBotoneraMenuPrincipal vista;
	private Policia policia;
	private Juego juego;
	private Ciudad ciudadAnterior;
	private boolean cambiarPaises = true;
	private boolean crearNuevosLugaresPreguntables = true;	
	private boolean ordenDeArrestoSeteada;
	
	public ControlMenuPrincipal(VistaBotoneraMenuPrincipal vista,Policia policia, Juego juego){
		this.vista = vista;
		this.policia = policia;
		this.juego = juego;		
		actionListener(this);
		ciudadAnterior = policia.getCiudadActual();
		ordenDeArrestoSeteada=false;
	}
	private void actionListener(ActionListener escuchador){
		vista.getBotonViajes().addActionListener(escuchador);
		vista.getBotonLugaresPreguntables().addActionListener(escuchador);
		vista.getBotonOrdenDeArresto().addActionListener(escuchador);
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == vista.getBotonViajes()) {
			if ((policia.getCiudadActual() != ciudadAnterior)|| (cambiarPaises)){
				VistaPoliciaViajar vistaPoliciaViajar = new VistaPoliciaViajar(juego);
				new ControlPoliciaViajar(vistaPoliciaViajar,juego);
				if (policia.getCiudadActual() != ciudadAnterior){
					crearNuevosLugaresPreguntables = true;
				}
				ciudadAnterior = policia.getCiudadActual();
				cambiarPaises = false;
				
			}
			VistaMenuPrincipal.obtenerInstancia().setearPanelAMostrarInferiorIzquierdo("vistaPoliciaViajar");
			VistaMenuPrincipal.obtenerInstancia().setearPanelAMostrarSuperiorDerecho("vistaPanelSuperiorDerechoDefault");
		}
		if (e.getSource() == vista.getBotonLugaresPreguntables()){
			if ((policia.getCiudadActual() != ciudadAnterior)||(crearNuevosLugaresPreguntables)){
				VistaPoliciaPreguntar vistaPregunta = new VistaPoliciaPreguntar();
				new ControlPoliciaPreguntar(vistaPregunta,juego);
				if (policia.getCiudadActual() != ciudadAnterior){
					cambiarPaises = true;
				}
				ciudadAnterior = policia.getCiudadActual();
				crearNuevosLugaresPreguntables = false;
			}
			VistaMenuPrincipal.obtenerInstancia().setearPanelAMostrarInferiorIzquierdo("vistaPoliciaPreguntar");
			VistaMenuPrincipal.obtenerInstancia().setearPanelAMostrarSuperiorDerecho("vistaPanelSuperiorDerechoDefault");
		}
		if (e.getSource() == vista.getBotonOrdenDeArresto()){
			ControlOrdenDeArresto.obtenerInstancia();
			if (!ordenDeArrestoSeteada){
				ControlOrdenDeArresto.obtenerInstancia().setearJuego(juego);
				ordenDeArrestoSeteada = true;
			}
			VistaMenuPrincipal.obtenerInstancia().setearPanelAMostrarInferiorIzquierdo("vistaOrdenDeArresto");
			VistaMenuPrincipal.obtenerInstancia().setearPanelAMostrarSuperiorDerecho("vistaPanelSuperiorDerechoDefault");
		}
	}
}
